---
title: 交接
description: Delegate tasks from one agent to another
---

import { Code } from '@astrojs/starlight/components';
import basicUsageExample from '../../../../../../examples/docs/handoffs/basicUsage.ts?raw';
import customizeHandoffExample from '../../../../../../examples/docs/handoffs/customizeHandoff.ts?raw';
import handoffInputExample from '../../../../../../examples/docs/handoffs/handoffInput.ts?raw';
import inputFilterExample from '../../../../../../examples/docs/handoffs/inputFilter.ts?raw';
import recommendedPromptExample from '../../../../../../examples/docs/handoffs/recommendedPrompt.ts?raw';

交接让一个智能体将对话的一部分委托给另一个智能体。当不同智能体在特定领域各有所长时，这非常有用。比如在客服应用中，您可以有处理预订、退款或常见问题的智能体。

交接在 LLM 中以工具形式呈现。如果您将对话交接给名为 `Refund Agent` 的智能体，工具名将是 `transfer_to_refund_agent`。

## 创建交接

每个智能体都接受一个 `handoffs` 选项。它可以包含其他 `Agent` 实例，或由 `handoff()` 帮助函数返回的 `Handoff` 对象。

### 基本用法

<Code lang="typescript" code={basicUsageExample} title="基础交接" />

### 通过 `handoff()` 自定义交接

`handoff()` 函数允许您微调生成的工具。

- `agent` – 要交接到的智能体。
- `toolNameOverride` – 覆盖默认的 `transfer_to_<agent_name>` 工具名。
- `toolDescriptionOverride` – 覆盖默认的工具描述。
- `onHandoff` – 交接发生时的回调。接收一个 `RunContext`，以及可选的已解析输入。
- `inputType` – 交接的期望输入模式。
- `inputFilter` – 过滤传递给下一个智能体的历史记录。

<Code lang="typescript" code={customizeHandoffExample} title="自定义交接" />

## 交接输入

有时您希望 LLM 在调用交接时提供数据。定义一个输入模式，并在 `handoff()` 中使用它。

<Code lang="typescript" code={handoffInputExample} title="交接输入" />

## 输入过滤器

默认情况下，交接会接收整个对话历史。要修改传递给下一个智能体的内容，请提供一个 `inputFilter`。
常用的辅助函数位于 `@openai/agents-core/extensions`。

<Code lang="typescript" code={inputFilterExample} title="输入过滤器" />

## 推荐提示

当您的提示中提到交接时，LLM 的响应更稳定。SDK 通过 `RECOMMENDED_PROMPT_PREFIX` 提供了推荐前缀。

<Code lang="typescript" code={recommendedPromptExample} title="推荐提示" />
